class MenuTransformer {
    constructor(response) {
        this.response = response;
    }

    transform() {
        if (!this.response || this.response.data.code !== 1) {
            console.error("无效的响应数据", this.response);

            return [];
        }
        const rows = this.response.data.rows || [];
        console.log("原始菜单数据:", rows);

        const menuMap = {};
        const topLevelMenus = [];

        // 第一遍: 创建所有菜单项（使用 ID 保证唯一性）
        rows.forEach(item => {
            menuMap[item.id] = {
                id: item.id, // 保留原始ID
                index: `${item.path}`, // 组合ID和path保证唯一
                path: item.path, // 单独保留原始路径
                title: item.name,
                icon: item.icon,
                order: item.orderNum,
                children: []
            };
        });

        console.log("菜单映射表:", menuMap);

        // 第二遍: 构建层级关系
        rows.forEach(item => {
            if (item.parentId === null || item.parentId === 0) {
                topLevelMenus.push(menuMap[item.id]);
            } else {
                const parent = menuMap[item.parentId];
                if (parent) {
                    parent.children.push(menuMap[item.id]);
                } else {
                    console.warn(`找不到父菜单 ID: ${item.parentId}，对应菜单项:`, item);
                }
            }
        });

        // 按 orderNum 排序
        topLevelMenus.sort((a, b) => a.order - b.order);
        topLevelMenus.forEach(menu => {
            if (menu.children.length > 0) {
                menu.children.sort((a, b) => a.order - b.order);
            }
        });

        console.log("最终菜单结构:", topLevelMenus);
        return topLevelMenus;
    }

    getMenuItems() {
        console.log("原始响应数据:", this.response)
        return this.transform();
    }
}

export default MenuTransformer;
